config_apply_dhcp_rtx(dhcpv6_retx);
client_options = config_dhcp->client_options;
+ na_mode = config_dhcp->ia_na_mode;
+ pd_mode = config_dhcp->ia_pd_mode;
+ stateful_only_mode = config_dhcp->stateful_only_mode;
sock = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
if (sock < 0)
IOV_TOTAL
};
-int dhcpv6_set_ia_mode(enum odhcp6c_ia_mode na, enum odhcp6c_ia_mode pd, bool stateful_only)
+int dhcpv6_get_ia_mode(void)
{
int mode = DHCPV6_UNKNOWN;
- na_mode = na;
- pd_mode = pd;
- stateful_only_mode = stateful_only;
-
if (na_mode == IA_MODE_NONE && pd_mode == IA_MODE_NONE)
mode = DHCPV6_STATELESS;
else if (na_mode == IA_MODE_FORCE || pd_mode == IA_MODE_FORCE)
dhcpv6_retx[DHCPV6_MSG_SOLICIT].max_timeo = cand->sol_max_rt;
dhcpv6_retx[DHCPV6_MSG_INFO_REQ].max_timeo = cand->inf_max_rt;
-
- dhcpv6_set_state(DHCPV6_SOLICIT);
return -1;
}
syslog(LOG_NOTICE, "(re)starting transaction on %s", ifname);
signal_usr1 = signal_usr2 = false;
+
dhcpv6_set_state(DHCPV6_SOLICIT);
break;
case DHCPV6_SOLICIT:
- mode = dhcpv6_set_ia_mode(config_dhcp->ia_na_mode, config_dhcp->ia_pd_mode, config_dhcp->stateful_only_mode);
+ mode = dhcpv6_get_ia_mode();
if (mode == DHCPV6_STATELESS) {
dhcpv6_set_state(DHCPV6_REQUEST);
break;
};
int init_dhcpv6(const char *ifname);
-int dhcpv6_set_ia_mode(enum odhcp6c_ia_mode na, enum odhcp6c_ia_mode pd, bool stateful_only);
+int dhcpv6_get_ia_mode(void);
int dhcpv6_promote_server_cand(void);
int dhcpv6_send_request(enum dhcpv6_msg type);
int dhcpv6_receive_response(enum dhcpv6_msg type);